Satellite communication systems introduce additional latency due to propagation delay between communicating source and destination devices. Non-critical applications, including but not limited to, Voice over Internet Protocol (VoIP), Internet Protocol Television (IPTV), and stream media typically use a User Datagram Protocol (UDP), which provides one-way communication. Unlike TCP data packets, received UDP packets are not acknowledged to a source. Therefore, the additional latency caused by the satellite communication systems does not cause a problem when using the UDP.
The TCP provides reliable communication between a source device and a destination device. As data is received in a TCP data packet, the destination device responds with a TCP acknowledgment packet. The source device keeps a record of each TCP data packet that the source device sends. The source device also maintains a timer, which is started when the TCP data packet is sent, and retransmits the TCP data packet if the timer expires before a corresponding TCP acknowledgment packet is received from the destination device. The timer may expire 0.5 seconds, or another suitable time period, after being started if no corresponding TCP acknowledgment packet is received. When using a satellite communication system to communicate TCP data packets and corresponding TCP acknowledgment packets between the source device and the destination device, propagation delay may be on an order of seconds, thereby preventing the source from receiving TCP acknowledgment packets within the timeout period.
TCP spoofing may be used to solve the problem caused by the propagation delay introduced by satellite communication systems. One solution was provided in which an application processor executed software to process packets received via a satellite communication system before the packets are routed over a local area network to a destination. The software, when executed by the application processor, caused the application processor to parse each received packet to determine whether a received packet, which was communicated via a system having a large propagation delay such as a satellite communication system, was a TCP data packet. If the received packet was determined to be the TCP data packet, then the application processor generated a corresponding TCP acknowledgment packet for transmission back to a source of the TCP data packet. The application processor forwarded received packets toward the destination in a local area network, and generated a corresponding TCP acknowledgment packet to send to the source only when the received packet was determined to be the TCP data packet.
Currently, most traffic between a source and a destination communicating via a satellite communication system is non-TCP traffic. The one solution, described above, reduced the propagation delay between a source and a destination, but was very inefficient because each and every received packet was parsed by the application processor to determine whether the received packet was the TCP data packet. Due to the workload caused by parsing, the application processor employed in the one solution was a high-performance processor that consumed more power and increased system cost. As a result, the TCP spoofing as implemented by software in the one solution introduced parsing delays for all traffic, thereby delaying UDP traffic, reducing Quality of Service (QoS) for VoIP, and slowing streamed media.